/**
 * 接口 ApplicantService 提供了一系列管理课程申请流程的方法。
 * 这些方法包括学生申请、教师审批以及查询各种课程申请状态。
 */
package net.lzzy.practices.service;

import net.lzzy.practices.entities.Applicant;
import net.lzzy.practices.entities.Course;

import java.util.List;
import java.util.UUID;

/**
 * @author AndyStern
 */
public interface ApplicantService {
    Applicant apply(UUID studentId, UUID courseId,String token);

    List<Applicant> getAllCourses(UUID studentId,String token);

    List<Applicant> getEnrolledCourses(UUID studentId,String token);

    List<Applicant> getApplyingCourses(UUID studentId,String token);

    List<Applicant> getDeclinedCourses(UUID studentId,String token);

    Applicant approve(UUID applicantId,String token);

    Applicant decline(UUID applicantId,String token);

    List<Applicant> getEnrolledStudents(UUID courseId,String token);

    List<Applicant> getApplyingStudents(UUID courseId,String token);

    List<Applicant> getDeclinedStudents(UUID studentId,String token);

    Course removeStudent(UUID courseId,UUID studentId,String token);
}
